Code developers are charged with the daunting task of authoring reliable code that is state-consistent in the face of exceptional conditions. State-consistent code refers to code that is deterministic, i.e., keeps track of the executed process. Exceptional conditions refer to asynchronous executions such as thread abort conditions, out-of-memory conditions, and stack overflow conditions. These conditions are asynchronous in the sense that they are not typically expected in the normal execution of the authored code, and are typically injected by the runtime environment of the code.
The process of authoring reliable code is made even more difficult when the authored code (i.e., “calling method”) includes any dependency upon code (i.e., “called method”) that originates from another source. If the called method is to be used by the author of the calling method in a reliable context, then the author of the calling method desires knowledge of any guarantees the author of the called method has made regarding how the called method behaves in the face of the aforementioned exceptional conditions. Without any such guarantees, the author of the calling method is unable to make any such guarantees about the reliability of the calling method since no such guarantees have been made with regard to the called method.
Typically, the author of a calling method relies on product documentation to discover any guarantees that have been made with regard to the called method. However, reliance upon product documentation is insufficient if the goal is to author truly reliable code. For example, product documentation is rarely accurate in view of any loss in communication or cooperation between those who author code and those who document the authored code.